// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Elastic.Clients.Elasticsearch.IndexLifecycleManagement;

public partial class IndexLifecycleManagementNamespacedClient : NamespacedClientProxy
{
	/// <summary>
	/// <para>Initializes a new instance of the <see cref="IndexLifecycleManagementNamespacedClient"/> class for mocking.</para>
	/// </summary>
	protected IndexLifecycleManagementNamespacedClient() : base()
	{
	}

	internal IndexLifecycleManagementNamespacedClient(ElasticsearchClient client) : base(client)
	{
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(DeleteLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteLifecycleRequest, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(DeleteLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequest, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(DeleteLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(Elastic.Clients.Elasticsearch.Name name, Action<DeleteLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(DeleteLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Deletes the specified lifecycle policy definition. A currently used policy cannot be deleted.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, Action<DeleteLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(GetLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetLifecycleRequest, GetLifecycleResponse, GetLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(GetLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequest, GetLifecycleResponse, GetLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(GetLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(Elastic.Clients.Elasticsearch.Name? name)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(Elastic.Clients.Elasticsearch.Name? name, Action<GetLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle()
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(Action<GetLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(GetLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(Elastic.Clients.Elasticsearch.Name? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(Elastic.Clients.Elasticsearch.Name? name, Action<GetLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Returns the specified policy definition. Includes the policy version and last modified date.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(Action<GetLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus(GetIlmStatusRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetIlmStatusRequest, GetIlmStatusResponse, GetIlmStatusRequestParameters>(request);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(GetIlmStatusRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequest, GetIlmStatusResponse, GetIlmStatusRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus(GetIlmStatusRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus()
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus(Action<GetIlmStatusRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(GetIlmStatusRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retrieves the current index lifecycle management (ILM) status.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(Action<GetIlmStatusRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers(MigrateToDataTiersRequest request)
	{
		request.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequest, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(request);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(MigrateToDataTiersRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequest, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers(MigrateToDataTiersRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers()
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers(Action<MigrateToDataTiersRequestDescriptor> configureRequest)
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(MigrateToDataTiersRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Migrates the indices and ILM policies away from custom node attribute allocation routing to data tiers routing</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(Action<MigrateToDataTiersRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(MoveToStepRequest request)
	{
		request.BeforeRequest();
		return DoRequest<MoveToStepRequest, MoveToStepResponse, MoveToStepRequestParameters>(request);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(MoveToStepRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<MoveToStepRequest, MoveToStepResponse, MoveToStepRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(MoveToStepRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>()
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(Action<MoveToStepRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(MoveToStepRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor> configureRequest)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(MoveToStepRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Action<MoveToStepRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(MoveToStepRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Manually moves an index into the specified step and executes that step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(PutLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutLifecycleRequest, PutLifecycleResponse, PutLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(PutLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequest, PutLifecycleResponse, PutLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(PutLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(Elastic.Clients.Elasticsearch.Name name, Action<PutLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(PutLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Creates a lifecycle policy</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, Action<PutLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(RemovePolicyRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RemovePolicyRequest, RemovePolicyResponse, RemovePolicyRequestParameters>(request);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(RemovePolicyRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequest, RemovePolicyResponse, RemovePolicyRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(RemovePolicyRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>()
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(RemovePolicyRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor> configureRequest)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(RemovePolicyRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(RemovePolicyRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(RetryRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RetryRequest, RetryResponse, RetryRequestParameters>(request);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(RetryRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RetryRequest, RetryResponse, RetryRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(RetryRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>()
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(Action<RetryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(RetryRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RetryRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor> configureRequest)
	{
		var descriptor = new RetryRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(RetryRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(Action<RetryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(RetryRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start(StartIlmRequest request)
	{
		request.BeforeRequest();
		return DoRequest<StartIlmRequest, StartIlmResponse, StartIlmRequestParameters>(request);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(StartIlmRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<StartIlmRequest, StartIlmResponse, StartIlmRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start(StartIlmRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start()
	{
		var descriptor = new StartIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start(Action<StartIlmRequestDescriptor> configureRequest)
	{
		var descriptor = new StartIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(StartIlmRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new StartIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Start the index lifecycle management (ILM) plugin.</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(Action<StartIlmRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new StartIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop(StopIlmRequest request)
	{
		request.BeforeRequest();
		return DoRequest<StopIlmRequest, StopIlmResponse, StopIlmRequestParameters>(request);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(StopIlmRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<StopIlmRequest, StopIlmResponse, StopIlmRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop(StopIlmRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop()
	{
		var descriptor = new StopIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop(Action<StopIlmRequestDescriptor> configureRequest)
	{
		var descriptor = new StopIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(StopIlmRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new StopIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin</para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(Action<StopIlmRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new StopIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor, cancellationToken);
	}
}